/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package studenttrack.session;

import java.util.List;
import javax.ejb.Remote;
import stException.BadLoginException;
import stException.CourseNotSelectedException;
import stException.ModuleNotAllowedOnEnrolledCourseException;
import stException.NotEnrolledOnModuleException;
import stException.NotLoggedInException;
import studenttrack.entity.Assessment;
import studenttrack.entity.ModuleI;

/**
 *
 * @author tg227
 */
@Remote
public interface StudentSessionRemote {
    public void login(String emailID, String password) throws BadLoginException;
    public List<ModuleI> getAvailableOptionalModules() throws NotLoggedInException, CourseNotSelectedException;
    public void enrollOptionalModule(String moduleCode) throws NotLoggedInException, ModuleNotAllowedOnEnrolledCourseException, CourseNotSelectedException;
    public void removeOptionalModule(String moduleCode) throws NotLoggedInException, NotEnrolledOnModuleException, CourseNotSelectedException;
    public List<ModuleI> getCompulsoryModulesEnrolledOn() throws NotLoggedInException, CourseNotSelectedException;
    public List<ModuleI> getOptionalModulesEnrolledOn() throws NotLoggedInException, CourseNotSelectedException;
    public List<ModuleI> getOptionalModulesAvailable() throws NotLoggedInException, CourseNotSelectedException;
    public long getCreditCount() throws NotLoggedInException, CourseNotSelectedException;
    public List<ModuleI> getCompletedModules() throws NotLoggedInException, CourseNotSelectedException;
    public List<ModuleI> getMissingPreReq(String moduleCode) throws NotLoggedInException, CourseNotSelectedException;
    public List<Assessment> getAssessments(long moduleCode) throws NotLoggedInException, CourseNotSelectedException;
    public void selectCourse(String courseCode) throws NotLoggedInException;

}
